import { usePermissionStore } from "@/store";

export const directiveRole =(el:any, binding:any) => {
  const permission = usePermissionStore();
  //获取指令传递过来的值
  const { value } = binding;
  //获取pania中的角色信息
  const roles = permission.roles;
  //判断指令是否传值，传递的值是否是一个数组，数组是否大于0
  if(value && value instanceof Array && value.length > 0){
    //some：用于检测数组中的元素是否满足指定的条件，并不会改变原来的数组，返回true/false
    const hasRole = roles.some(item => {
      //includes：用于判断数组中是否包含某个元素
      return value.includes(item);
    });
    //如果没有该角色
    if(!hasRole){
      //删除该元素
      if(el.parentNode){
        el.parentNode.removeChild(el);
      }
    }
  } else {
    throw new Error(`请设置${value}权限标签值`);
  }
}

export const directivePerms = (el:any, binding:any) => {
  const { value } = binding;
  const permission = usePermissionStore();
  //获取拥有的权限
  const permissions = permission.perms;
  // console.log('指令',value,permissions);
  //判断值是否存在，是否属于数组，是否大于0
  if (value && value instanceof Array && value.length > 0) {
    //判断拥有的权限是否包含指令的值
    const hasPerms = permissions.some(item => value.includes(item));
    //如果没有该权限
    if(!hasPerms){
      //删除该元素
      if(el.parentNode){
        el.parentNode.removeChild(el);
      }
    }
  } else {
    throw new Error(`请设置${value}权限标签值`);
  }

}